// 引入连接实例对象
const db = require('../db/index')
const bcrypt=require('bcryptjs')
const jwt = require('jsonwebtoken')
const config = require('../config')
// 用户登录接口处理函数
exports.handlelogin = (req, res) => {
    const { username, password } = req.body
    const sql='select password,id,username from ev_users where username=?'
    db.query(sql, [username], (err, results) => {
        if (err) return res.cc(err)
        // 判断用户名密码是否存在
        if(results.length==0)return res.cc('用户名或密码错误')
        // 获取数据中加密的密码
        const hash = results[0].password
        const isSame = bcrypt.compareSync(password, hash)
        // 密码不匹配返回错误提示
        if (!isSame) return res.cc('用户名或密码错误')
        const token = jwt.sign({ id: results[0].id}, config.tokenSecret, {
            algorithm: 'HS256',
            expiresIn: '4d'
        })
        // console.log(token);//是一个数组
        res.send({
            status: 0,
            message: '登录成功',
            token:'Bearer ' + token
        })
    })
}
// 用户注册接口处理函数


exports.handleReguser = (req, res) => {
    const { username, password } = req.body
    // if (!username || !password) {
    //     res.cc('用户密码不能为空')


    // }
    const sql=`select * from ev_users where username=?`
    db.query(sql, [username], (err, results) => {
        if (err) return res.cc(err)
 //如果得到的数组长度大于0,存在重复用户名
        if (results.length > 0) return res.cc('用户名已被占用')
        // 对密码进行加密
        const hash = bcrypt.hashSync(password, 10)
        const sql = `insert into ev_users set username=?,password=?`
        db.query(sql, [username, hash], (err, results) => {
            if (err) return res.cc(err)
            
            // 非查询语句都要判断影响的函数
            if (results.affectedRows !== 1) return res.cc('注册失败')
            res.send({
                status: 0,
                message:'注册成功'
            })
            
        })

    })
}